#!/bin/sh

\. ../common.sh

die () { echo "$@" ; exit 1; }

\. ../../nvm.sh

set -ex

NVM_TEST_VERSION='v3.99.9'
NVM_PREFIXED_TEST_VERSION="iojs-${NVM_TEST_VERSION}"

# Remove the stuff we're clobbering.
nvm uninstall "${NVM_TEST_VERSION}" || echo 'not installed'

# Exercise nvm's entire source-install pipeline - cache, extract, configure,
# make, make install, activation - against a tiny fake source tree, seeded
# into the download cache and installed with --offline. This runs everywhere,
# including on toolchains where real io.js can not compile; `install from
# source` covers the real compile, in CI's gcc:4.9 container job.
SLUG="$(nvm_get_download_slug iojs source "${NVM_TEST_VERSION}")"
COMPRESSION="$(nvm_get_artifact_compression "${NVM_TEST_VERSION}")"
CACHE_DIR="$(nvm_cache_dir)/src/${SLUG}"
STAGING="$(mktemp -d)"
mkdir -p "${STAGING}/${SLUG}" "${CACHE_DIR}"
cp ../fixtures/fake-source-tarball/configure ../fixtures/fake-source-tarball/Makefile "${STAGING}/${SLUG}/"
chmod +x "${STAGING}/${SLUG}/configure"
echo "${NVM_TEST_VERSION}" > "${STAGING}/${SLUG}/VERSION"
if [ "${COMPRESSION}" = 'tar.xz' ]; then
  (cd "${STAGING}" && tar -cJf "${CACHE_DIR}/${SLUG}.${COMPRESSION}" "${SLUG}")
else
  (cd "${STAGING}" && tar -czf "${CACHE_DIR}/${SLUG}.${COMPRESSION}" "${SLUG}")
fi
rm -rf "${STAGING}"

# Install from source
nvm install -s --offline "${NVM_PREFIXED_TEST_VERSION}" || die "'nvm install -s --offline ${NVM_PREFIXED_TEST_VERSION}' failed"

# Check
nvm_is_version_installed "${NVM_PREFIXED_TEST_VERSION}" || die 'version not installed'
nvm run --silent "${NVM_PREFIXED_TEST_VERSION}" --version | grep "${NVM_TEST_VERSION}" || die "'nvm run ${NVM_PREFIXED_TEST_VERSION} --version | grep ${NVM_TEST_VERSION}' failed"

rm -rf "${CACHE_DIR}"
